﻿using Lotus.Domain.Input;
using Lotus.Domain.Input.Lotus;
using Lotus.Domain.Output;
using Lotus.Domain.OutPut.Lotus;
using RS.BaseModel.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lotus.AspNetCore
{
    public interface IBaseLotusClient
    {
        CommonResult<GetLotusUserInfoListOutput> GetLotusUserInfoList(GetLotusUserInfoListInput input);

        CommonResult<GetLotusOrgInfoListOutput> GetLotusOrgInfoList(GetLotusOrgInfoListInput input);

        /// <summary>
        /// 项目过程文件_发起
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        CommonResult<StartLotusWorkflowOutput> StartLotusWorkflow(StartLotusWorkflowInput input);

        /// <summary>
        /// 获取项目过程文件_发起url
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<GetStartLotusWorkflowUrlOutput> GetStartLotusWorkflowUrl(GetStartLotusWorkflowUrlInput input);

        /// <summary>
        /// 项目过程文件_发起撤回输入对象
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<RecallLotusWorkflowOutput> RecallLotusWorkflow(RecallLotusWorkflowInput input);

        /// <summary>
        /// 获取BPM详情页地址
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<GetApplyLotusWorkflowUrlOutput> GetApplyLotusWorkflowUrl(GetApplyLotusWorkflowUrlInput input);

        /// <summary>
        /// 发送路特斯消息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<SendLotusMessageOutput> SendLotusMessage(SendLotusMessageInput input);

        /// <summary>
        /// 标准编制任务完成状态
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<SyncLSRPTaskStatusOutput> SyncLSRPTaskStatus(SyncLSRPTaskStatusInput input);

        /// <summary>
        /// 同步Fdj信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<SyncFdjInfoOutput> SyncFdjInfo(List<SyncFdjInfoInput> input);

        /// <summary>
        /// 推送签字盖章页
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<DPSPushOutput> ReceiveEsowAgreeDoc(DPSPushInput input);

        /// <summary>
        /// 推送ESOW
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<SaveOrUpdateEsowOutput> SaveOrUpdateEsow(List<SaveOrUpdateEsowInput> input);

        /// <summary>
        /// EPS推送签字盖章页
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<EPSPushOutput> ReceiveEsowAgreeDocForEPS(EPSPushInput input);

        /// <summary>
        /// EPS推送ESOW
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public CommonResult<SaveOrUpdateEsowForEPSOutput> SaveOrUpdateEsowForEPS(List<SaveOrUpdateEsowForEPSInput> input);
    }
}
